package com.study.design.pattern.pattern.behavioral.state;

/**
 * 未支付状态（初始状态）
 * 允许操作：支付、取消
 * 禁止操作：发货、收货
 */
public class UnpaidState implements OrderState {
    /**
     * 处理支付操作：将状态变更为已支付
     */
    @Override
    public void pay(OrderContext context) {
        System.out.println("支付成功，准备出库");
        context.setState(new PaidState());
    }

    /**
     * 处理取消操作：将状态变更为已取消
     */
    @Override
    public void cancel(OrderContext context) {
        System.out.println("订单已取消");
        context.setState(new CanceledState());
    }

    /**
     * 未支付状态下禁止发货
     */
    @Override
    public void ship(OrderContext context) {
        System.out.println("错误操作：未支付订单不能发货");
    }

    /**
     * 未支付状态下禁止收货
     */
    @Override
    public void receive(OrderContext context) {
        System.out.println("错误操作：未支付订单不能收货");
    }
}
